// 如果需要在组件中使用计算属性功能，需要 miniprogram-computed 库中导入 ComponentWithComputed 方法

// 在使用时：需要将 Component 方法替换成 ComponentWithComputed 方法 ，
// 原本组件配置项也需要写到该方法中
import { ComponentWithComputed } from "miniprogram-computed";
ComponentWithComputed({
  /**
   * 组件的属性列表
   */
  properties: {},

  /**
   * 组件的初始数据
   */
  data: {
    a: 10,
    b: 2,
  },
  computed: {
    total(data) {
      // 注意：
      // computed 函数中不能访问 this ，只有 data 对象可供访问
      // 这个函数的返回值会被设置到 this.data.sum 字段中

      // 计算属性具有缓存，计算属性使用多次，但是计算属性方法只会执行一次
      console.log("~~~~~");

      return data.a + data.b;
    },
  },
  watch: {
    //key：需要监听的数据
    //value:是回调函数，回调函数有一个形参，形参就是最新的、改变后的数据
    a: function (a) {
      console.log(a);
    },

    // 同时对 a 和 b 进行监听
    "a, b": function (a, b) {
      console.log("a, b", a, b);
      this.setData({
        total: a + b,
      });
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    update() {
      this.setData({
        a: this.data.a + 1,
        b: this.data.b + 1,
      });
    },
  },
});
